package com.shi.method_reference;

import java.util.Arrays;
import java.util.Comparator;

public class Demo01 {
    public static void main(String[] args) {
        //需求：创建一个数组，进行倒序排列
        Integer[] arr = {3, 5, 4, 1, 6, 2};

        //1. 匿名内部类
//        Arrays.sort(arr, new Comparator<Integer>() {
//            @Override
//            public int compare(Integer o1, Integer o2) {
//                return o2 - o1;
//            }
//        });

        //2. lambda表达式
        //因为Arrays.sort()第二个参数是一个函数式接口，所以可以用lambda表达式来简化书写
        //函数式接口：只包含一个抽象方法的接口
//        Arrays.sort(arr, (Integer o1, Integer o2) -> {
//            return o2 - o1;
//        });

        //3. lambda表达式简化版
        //Arrays.sort(arr, (o1, o2) -> o2 - o1);

        //4. 方法引用
        //1.引用处需要是函数式接口
        //2.被引用的方法需要已经存在
        //3.被引用方法的形参和返回值需要跟抽象方法的形参和返回值保持一致
        //4.被引用方法的功能需要满足当前的要求


        System.out.println(Arrays.toString(arr));
    }

}
